<?php
/* 
 * 获取token值的类
 */
class GetToken{
   
    
    /*
     * 成员属性
     * @param sring $appid         开发者的ID
     * @param string $appsecret    开发者秘钥
     */
    private $appid='wxc9283961b4fc1eaf';
    private $appsecret='df8714ebb6b4d430a76154354a370e06';
    private $file='token.txt';//文件名
    private $url;//服务器的地址
    
   //构造方法
 function __construct(){
     $this->url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
 }            
  function getToken($data=null){
      //判断文件是否存下
      if(is_file($this->file)){
          //获取现在的时间戳
          $now=time();
          /*
           * file_get_contents  获取文件的内容
           */
          $str=  file_get_contents($this->file);
          /*
           * explode 将字符串转化为数组
           */
          $array_str=explode(',',$str);
          /*
           * 获取微信的失效时间
           */
          $time=$array_str[1];
          if($now>$time){
              //token失效
              $this->CreateToken($this->url,  $this->file,$data);
              
          }  else {
              //获取token值
              $token=$array_str[0];
              return $token;
          }
      }  else {
          $token=  $this->Createtoken($this->url,  $this->file,$data);
          return $token;
      }
  }
  
  private function https_post($url,$data=null){
      //初始化
   $curl=curl_init();
   //设置参数
   curl_setopt($curl,CURLOPT_URL,$url);//需要获取的url地址
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);//关闭验证证书
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);//检查服务器ssl证书中是否存在一个公用名
   
   if(!empty($data)){
       curl_setopt($curl, CURLOPT_POST,TRUE);//post提交
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//全部数据使用HTTP协议中的 "POST" 操作来发送
   }
   curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//TRUE 将curl_exec()获取的信息以字符串返回，而不是直接输出
   //执行
   $output=  curl_exec($curl);
   //关闭
   curl_close($curl);
   return $output;
  }
  private function CreateToken($url,$file,$data=null){
        $data1        = $this->https_post($url);    
        $array_data  = json_decode($data1);
     
        //将获取的token保存到文件
        $handle  = fopen($file, 'w');
        $time = $array_data->expires_in+time();
        $str = $array_data->access_token.','.$time;
        fwrite($handle,$str);
        fclose($handle);
        return $array_data->access_token;
    }
    
    function getIp(){
        $token=  $this->getToken();
        $url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token='.$token;
        $ip = $this->https_post($url);
        return $ip;
    }
    //自定义菜单创建接口
    function CreateMenu(){
        $token=$this->getToken();
        $url='https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$token;
        $menu=file_get_contents('menu.json');
        $getMenu=$this->https_post($url,$menu);
        return $getMenu;
    }
    //自定义菜单的查询接口
    function GetMenu(){
        $token=$this->getToken();
        $url='https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$token;
        $data=  $this->https_post($url);
        $con=  json_decode($data);
        return $con;
    }
    //删除自定义菜单接口
    function DeleteMenu(){
        $token=  $this->getToken();
        $url='https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$token;
        $data=  $this->https_post($url);
        return $data;
    }
    //获取用户列表
    function GetUser(){
        $token=  $this->getToken();
        $url='https://api.weixin.qq.com/cgi-bin/user/get?access_token='.$token."&next_openid=".$next_openid;
        $res = json_decode($this->https_post($url));
        return $res;
    }
    //获取关注人的信息（通过OPENId来获取）
        public function GetUserInfor() {
        $token = $this->getToken();
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $token . "&openid=oFDWrvxLew7DpcYLjlvegX9v6eBc&lang=zh_CN";
        $res = json_decode($this->https_post($url));
        return $res;
    }
    
}
